#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <unistd.h>

#define MSGTYPE 1
struct msgbuf {
    long mtype;
    char mtext[100];
};

int main() {
    key_t key;
    int msgid;

    key = ftok("/tmp/example", 'R');
    msgid = msgget(key, 0666 | IPC_CREAT);

    if (msgid == -1) {
        perror("msgget");
        exit(1);
    }

    // 1.发送 msgtype = 1的数据
    int count = 0;
    while(1){
        struct msgbuf msg;
        // if(count %2 == 0)
        //     msg.mtype = MSGTYPE;
        // else
        //     msg.mtype = MSGTYPE + 1;
        msg.mtype = MSGTYPE;
        
        memset(msg.mtext, 0, sizeof(msg.mtext));
        // gets(msg.mtext);
        fgets(msg.mtext, sizeof(msg.mtext),stdin);
        if(strlen(msg.mtext) < 2)
            continue;
        if (msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0) == -1) {
            perror("msgsnd");
            exit(1);
        }
        count ++;
    }

    return 0;
}

